package servlets;

import dao.DrugDAO;
import to.Drug;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Set;

/**
 * Сервлет, используемый для добавления записей в таблицу
 *
 * @author Andrey Murgo
 */
public class AddRowController extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //Получение введенной информации о лекарстве
        Drug drug = new Drug(
                0, //поле с автоинкрементом - значение не важно
                req.getParameter("name").trim(),
                req.getParameter("substance").trim(),
                req.getParameter("farmaaction").trim(),
                Integer.parseInt(req.getParameter("usefulmonth")),
                req.getParameter("salesterms").trim(),
                Double.parseDouble(req.getParameter("rub") + "." + req.getParameter("cop"))  //Т.к. для цены два поля ввода
        );
        //Получение дополнительных параметров о лекарстве
        Set<String> parameters = req.getParameterMap().keySet();
        String param;
        Collection<Integer> analogs = new ArrayList<>();
        Collection<Integer> incompatibilities = new ArrayList<>();
        Collection<Integer> contraindications = new ArrayList<>();

        for (String name : parameters) {
            if (name.matches("analog.+")) {
                param = req.getParameter(name);
                if (!param.isEmpty()) {
                    analogs.add(Integer.parseInt(param));
                }
            } else if (name.matches("incompatibility.+")) {
                param = req.getParameter(name);
                if (!param.isEmpty()) {
                    incompatibilities.add(Integer.parseInt(param));
                }
            } else if (name.matches("contraindication.+")) {
                param = req.getParameter(name);
                if (!param.isEmpty()) {
                    contraindications.add(Integer.parseInt(param));
                }
            }
        }
        //Добавление информации в БД
        DrugDAO dao = new DrugDAO();
        int drugID = dao.addDrug(drug);
        if (!analogs.isEmpty()) {
            dao.addAnalogs(drugID, analogs);
        }
        if (!incompatibilities.isEmpty()) {
            dao.addIncompatibilities(drugID, incompatibilities);
        }
        if (!contraindications.isEmpty()) {
            dao.addContraindications(drugID, contraindications);
        }
        req.setAttribute("result", "ok");
        req.setAttribute("drug", drug); //добавляемый объект
        req.setAttribute("drugID", drugID); //т.к. ID получаем новый, уже после добавления
        req.getRequestDispatcher("addRow.jsp").forward(req, resp);
    }
}


























